home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Original Shareware 1.1
/
The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso
/
36
/
vfos_dv.zip
/
DVAPI.INC
< prev
next >
Wrap
Text File
|
1988-02-15
|
6KB
|
349 lines
; DESQview API interfaces
;***************************************************************
;
; Function numbers (AX values) for the @CALL interface
;
;***************************************************************
PAUSE EQU 1000H
PRINTC EQU 1003H
GETBIT EQU 1013H
FREEBIT EQU 1014H
SETBIT EQU 1015H
ISOBJ EQU 1016H
LOCATE EQU 1018H
SOUND EQU 1019H
OSTACK EQU 101AH
BEGINC EQU 101BH
ENDC EQU 101CH
STOP EQU 101DH
START EQU 101EH
DISPEROR EQU 101FH
PGMINT EQU 1021H
POSWIN EQU 1023H
GETBUF EQU 1024H
USTACK EQU 1025H
POSTTASK EQU 102BH
NEWPROC EQU 102CH
KMOUSE EQU 102DH
APPNUM EQU 1107H
DBGPOKE EQU 110AH
APILEVEL EQU 110BH
GETMEM EQU 110CH
PUTMEM EQU 110DH
FINDMAIL EQU 110EH
PUSHKEY EQU 1110H
JUSTIFY EQU 1111H
CSTYLE EQU 1112H
DVPRESENT EQU 0FFFFH
SHADOW EQU 0FFFEH
UPDATE EQU 0FFFDH
;***************************************************************
;
; Message numbers (BH values) for the @SEND interface
;
;***************************************************************
HANDLE EQU 00H
NEW EQU 01H
FREE EQU 02H
ADDR EQU 03H
DIR EQU 03H
READ EQU 04H
APPLY EQU 04H
WRITE EQU 05H
SIZEOF EQU 08H
LEN EQU 09H
ADDTO EQU 0AH
SUBFROM EQU 0BH
OPEN EQU 0CH
CLOSE EQU 0DH
ERASE EQU 0EH
STATUS EQU 0FH
EOF EQU 10H
AT EQU 11H
SETSCALE EQU 11H
SETNAME EQU 11H
READN EQU 12H
GETSCALE EQU 12H
REDRAW EQU 13H
SETESC EQU 14H
LOCK EQU 14H
;***************************************************************
;
; Modifier numbers (BL values) for the @SEND interface
;
;***************************************************************
TOS EQU 00H
ME EQU 01H
MAILTOS EQU 02H
MAILME EQU 03H
KEYTOS EQU 04H
KEYME EQU 05H
OBJQTOS EQU 06H
OBJQME EQU 07H
WINDOW EQU 08H
MAILBOX EQU 09H
KEYBOARD EQU 0AH
TIMER EQU 0BH
POINTER EQU 0FH
PANEL EQU 10H
;***************************************************************
;
; 32-bit register equates
;
;***************************************************************
ESDI EQU 07FFFH
DSSI EQU 07FFEH
BXAX EQU 07FFDH
DXCX EQU 07FFCH
ESSI EQU 07FFBH
DSDI EQU 07FFAH
;***************************************************************
;
; @SEND interface macro - bombs AH and BX
;
;***************************************************************
@SEND macro message,object
if (type object) ne abs
@PUSH &object
MOV BX,&message*256+TOS
else
if object ge DSDI
@PUSH &object
MOV BX,&message*256+TOS
else
MOV BX,&message*256+&object
endif
endif
MOV AH,12H
INT 15H
endm
;***************************************************************
;
; @CALL interface macro - bombs AX
;
;***************************************************************
@CALL macro func
local L1
if (func eq APILEVEL)
CMP BX,200H ; is 2.00 sufficient ?
JB L1 ; jump if so
MOV AX,APILEVEL ; issue the call
INT 15H
CMP AX,2 ; early version 2.00 ?
JNE L1 ; jump if not
XCHG BH,BL ; reverse bytes
MOV AX,APILEVEL ; reissue call
INT 15H
XCHG BH,BL ; correct byte order
L1:
else
if (func eq DVPRESENT)
PUSH BX ; save registers
PUSH CX
PUSH DX
MOV AX,2B01H ; DOS Set Date function
XOR BX,BX ; in case outside DESQview
MOV CX,'DE' ; invalid date value
MOV DX,'SQ'
INT 21H
MOV AX,BX ; version # to AX
CMP AX,2 ; early DV 2.00 ?
JNE L1 ; jump if not
XCHG AH,AL ; swap bytes if so
L1: POP DX ; restore registers
POP CX
POP BX
else
if (func eq SHADOW)
MOV AH,0FEH
INT 10H
else
if (func eq UPDATE)
MOV AH,0FFH
INT 10H
else
MOV AX,&func
INT 15H
endif
endif
endif
endif
endm
;***************************************************************
;
; @PUSH and supporting macros - pushes 32-bit values on the stack
;
;***************************************************************
@PUSH_ESDI macro
PUSH ES
PUSH DI
endm
@PUSH_DSSI macro
PUSH DS
PUSH SI
endm
@PUSH_BXAX macro
PUSH BX
PUSH AX
endm
@PUSH_DXCX macro
PUSH DX
PUSH CX
endm
@PUSH_ESSI macro
PUSH ES
PUSH SI
endm
@PUSH_DSDI macro
PUSH DS
PUSH DI
endm
@PUSH macro parm
if (type parm) ne abs
PUSH WORD PTR &parm+2
PUSH WORD PTR &parm
else
@PUSH_&parm
endif
endm
;***************************************************************
;
; @POP and supporting macros - pops 32-bit values from the stack
;
;***************************************************************
@POP_ESDI macro
POP DI
POP ES
endm
@POP_DSSI macro
POP SI
POP DS
endm
@POP_BXAX macro
POP AX
POP BX
endm
@POP_DXCX macro
POP CX
POP DX
endm
@POP_ESSI macro
POP SI
POP ES
endm
@POP_DSDI macro
POP DI
POP DS
endm
@POP macro parm
if (type parm) ne abs
POP WORD PTR &parm
POP WORD PTR &parm+2
else
@POP_&parm
endif
endm
;***************************************************************
;
; @MOV and supporting macros - moves 32-bit values to/from memory
;
;***************************************************************
@DV_LOAD macro seg,off,arg
MOV &seg,WORD PTR &arg+2
MOV &off,WORD PTR &arg
endm
@DV_STORE macro seg,off,arg
MOV WORD PTR &arg+2,&seg
MOV WORD PTR &arg,&off
endm
@MOV_ESDI macro mac,arg
&mac ES,DI,&arg
endm
@MOV_DSSI macro mac,arg
&mac DS,SI,&arg
endm
@MOV_BXAX macro mac,arg
&mac BX,AX,&arg
endm
@MOV_DXCX macro mac,arg
&mac DX,CX,&arg
endm
@MOV_ESSI macro mac,arg
&mac ES,SI,&arg
endm
@MOV_DSDI macro mac,arg
&mac DS,DI,&arg
endm
@MOV macro dest,src
if (type dest) eq abs
@MOV_&dest @DV_LOAD,&src
else
@MOV_&src @DV_STORE,&dest
endif
endm
;***************************************************************
;
; @CMP macro - compares BX:AX to DWORD in memory
;
;***************************************************************
@CMP macro parm
local L1
CMP AX,WORD PTR &parm
JNE L1
CMP BX,WORD PTR &parm+2
L1: endm